from api_py.enums.api import API
from test.api_life_cycle import api_life_cycle
from test.api_request import send_request_adapter
from utils.file_sys import read_json, write_json, write_xlxs
from utils.parse_data import parse_data


def api_test(api_type):
    request_cases = read_json(api_type.value[0]["file_name"])  # 从对应的json中读取输入对象
    requests = api_life_cycle[api_type][1](request_cases, api_type)  # 将对象转换为request对象
    responses = send_requests(api_type, requests)
    i = 0
    for item in responses:
        print(str(i) + " " + item.body)
        i += 1
    save_data(request_cases, requests, responses, api_type)


def send_requests(api_type, request_array):
    responses = []
    for request in request_array:
        response = send_request_adapter(api_type.value[0]["method"], request)
        api_life_cycle[api_type][3](request, api_type, response)  # after each
        responses.append(response)
    return responses

def save_data(cases, requests, responses, api_type):
    # 将测试用例数据和返回结果封装为json
    data = parse_data(cases, requests, responses)
    # 将json保存在excel文件
    write_xlxs(data, api_type)

################################################################################################
# 后台接口测试

# 接口1
# print(type(api_life_cycle[API.API01_AUTH_LOGIN]))
# api_life_cycle[API.API01_AUTH_LOGIN][0](API.API01_AUTH_LOGIN) # 生成用例
# api_test(API.API01_AUTH_LOGIN) # 测试

# 接口2
# api_life_cycle[API.API02_LOGOUT][0](API.API02_LOGOUT) # 生成用例
# api_test(API.API02_LOGOUT) # 测试

# 接口4
# api_life_cycle[API.API04_AUTH_ME][0](API.API04_AUTH_ME) # 生成用例
# api_test(API.API04_AUTH_ME) # 测试

# 接口5
# api_life_cycle[API.API05_USER_MS][0](API.API05_USER_MS) # 生成用例
# api_test(API.API05_USER_MS) # 测试

# 接口6
# api_life_cycle[API.API06_USER_LIST][0](API.API06_USER_LIST) # 生成用例
# api_test(API.API06_USER_LIST)

# 接口8
# api_life_cycle[API.API08_USER_MS_SUPERVISOR][0](API.API08_USER_MS_SUPERVISOR) # 生成用例
# api_test(API.API08_USER_MS_SUPERVISOR)

# 接口9
# api_life_cycle[API.API09_USER_MS_COUNSELOR][0](API.API09_USER_MS_COUNSELOR) # 生成用例
# api_test(API.API09_USER_MS_COUNSELOR)

# 接口10
# api_life_cycle[API.API10_1_USER_MS_SUPERVISOR_LIST][0](API.API10_1_USER_MS_SUPERVISOR_LIST) # 生成用例
# api_test(API.API10_1_USER_MS_SUPERVISOR_LIST)
# 接口10.2
# api_life_cycle[API.API10_2_USER_MS_COUNSELOR_LIST][0](API.API10_2_USER_MS_COUNSELOR_LIST) # 生成用例
# api_test(API.API10_2_USER_MS_COUNSELOR_LIST)

# 接口11
# api_life_cycle[API.API11_USER_MS_SUPERVISOR][0](API.API11_USER_MS_SUPERVISOR) # 生成用例
# api_test(API.API11_USER_MS_SUPERVISOR)

# 接口12
# api_life_cycle[API.API12_USER_MS_COUNSELOR][0](API.API12_USER_MS_COUNSELOR) # 生成用例
# api_test(API.API12_USER_MS_COUNSELOR)

# 接口13
# api_life_cycle[API.API13_USER_MS_SUPERVISOR][0](API.API13_USER_MS_SUPERVISOR) # 生成用例
# api_test(API.API13_USER_MS_SUPERVISOR)

# 接口14
# api_life_cycle[API.API14_USER_MS_COUNSELOR][0](API.API14_USER_MS_COUNSELOR) # 生成用例
# api_test(API.API14_USER_MS_COUNSELOR)

# 接口15
# api_life_cycle[API.API15_USER_BAN][0](API.API15_USER_BAN) # 生成用例
# api_test(API.API15_USER_BAN)

# 接口16
# api_life_cycle[API.API16_USER_LIST][0](API.API16_USER_LIST) # 生成用例
# api_test(API.API16_USER_LIST)

# 接口17
# api_life_cycle[API.API17_USER_PASSWORD][0](API.API17_USER_PASSWORD) # 生成用例
# api_test(API.API17_USER_PASSWORD)

# 接口18
# api_life_cycle[API.API18_USER_UPDATE][0](API.API18_USER_UPDATE) # 生成用例
# api_test(API.API18_USER_UPDATE)

# 接口20
# api_life_cycle[API.API20_USER_ACTIVE][0](API.API20_USER_ACTIVE) # 生成用例
# api_test(API.API20_USER_ACTIVE)

# 接口21
# api_life_cycle[API.API21_USER_MAXCONSULTS][0](API.API21_USER_MAXCONSULTS) # 生成用例
# api_test(API.API21_USER_MAXCONSULTS)

# 接口22
# api_life_cycle[API.API22_ARRANGE][0](API.API22_ARRANGE) # 生成用例
# api_test(API.API22_ARRANGE)

# 接口23
# api_life_cycle[API.API23_ARRANGE_BATCH][0](API.API23_ARRANGE_BATCH) # 生成用例
# api_test(API.API23_ARRANGE_BATCH)

# 接口24
# api_life_cycle[API.API24_ARRANGE_THEDAY][0](API.API24_ARRANGE_THEDAY) # 生成用例
# api_test(API.API24_ARRANGE_THEDAY)

# 接口25
# api_life_cycle[API.API25_ARRANGE][0](API.API25_ARRANGE)  # 生成用例
# api_test(API.API25_ARRANGE)
